import java.util.HashMap;
import java.util.Map;

public class SubarraySumEqualsK {
    /**
     * 给你一个整数数组 nums 和一个整数 k ，
     * 请你统计并返回该数组中和为 k 的连续子数组的个数。
     * @param nums
     * @param k
     * @return
     */
    public int subarraySum(int[] nums, int k) {
        Map<Integer,Integer> map = new HashMap<Integer,Integer>();
        int count =0;
        int pre =0;
        map.put(0,1);
        for (int i=0;i<nums.length;i++){
            pre+=nums[i];
            if (map.containsKey(pre-k)){
                count += map.get(pre-k);
            }
            map.put(pre,map.getOrDefault(pre,0)+1);
        }
        return count;

    }
}
